/*
 * colas.c
 *
 *  Created on: 15/09/2011
 *      Author: utn_so
 */

#include<stdio.h>
#include<stdlib.h>
#include"./includes/colas.h"

int main()
{
   ptrNodo colafte,colafin;
   colafte=NULL;
   colafin=NULL;
   int eleccion;
   int elemento;

   titulo();
   printf( "? " );
   scanf( "%d", &eleccion );


   while ( eleccion != 3 ) {

      switch ( eleccion ) {

         case 1:
            printf( "Introduzca un numero: " );
            scanf( "\n%d", &elemento );
            agregar( &colafte,&colafin, elemento );
            mostrarLista( colafte );
            break;

         case 2:
        	if ( !estaVacia( colafte ) ) {
                 elemento = suprimir( &colafte, &colafin );
                 printf( "numero %d eliminado.\n", elemento );
                 mostrarLista( colafte );
               }
        	else{
                 printf( "la pila ya esta vacia\n");
            }
            break;

         default:
            printf( "Opcion invalida.\n\n" );
            titulo();
            break;

      }

      printf( "? " );
      scanf( "%d", &eleccion );
   }

   printf( "Fin del programa.\n" );

   return 0;

}


void agregar (ptrNodo *ColaFte,ptrNodo *ColaFin,int valor){
	ptrNodo ptrNuevo;
	ptrNuevo=malloc(sizeof(nodo_t));
	ptrNuevo->peticion=valor;
	ptrNuevo->ptrSgte=NULL;

	if(*ColaFte==NULL) {
		*ColaFte=ptrNuevo;
	}
	else{
		(*ColaFin)->ptrSgte=ptrNuevo;
	}
	*ColaFin=ptrNuevo;
}

int suprimir (ptrNodo *ColaFte, ptrNodo *ColaFin){
	ptrNodo ptr;
	int valorEliminado;
	ptr=*ColaFte;
	*ColaFte=(*ColaFte)->ptrSgte;
	if (*ColaFte==NULL){
		*ColaFin=NULL;
	}
	valorEliminado=ptr->peticion;
	free(ptr);
	return valorEliminado;
}

void titulo(void){
	printf("¿Que queres hacer?\n"
		"1 : Para insertar un nodo\n"
		"2 : Para eliminar  un nodo\n"
		"3 : Para salir del programa un nodo\n");
}


int estaVacia (ptrNodo ColaFte){
	if(ColaFte == NULL){ // si la lista esta vacia
		return 1;   //returna verdadero
	}
	else{
		return 0;   // returna falso
	}
}



void mostrarLista (ptrNodo ColaFte){
	ptrNodo ptr;
	ptr=ColaFte;
	if (ptr == NULL){
		printf("La cola esta vacia.\n\n");
	}
	else{
		printf("La cola es: \n");
		while(ptr !=NULL){
			printf("%d --> ", ptr->peticion);
			ptr=ptr->ptrSgte;
		}
		printf("NULL\n\n");
	}
}
